import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 *clase Bala 
 *objeto que sale cuando el jugador dispara
 * @author Anthony Robledo 
 * @version 1.1
 */
public class Bala extends Actor
{
    private boolean dir;//direccion izq o der de la bala 
    private boolean band;//bandera usada para saver si ia se elimino la bala 
    private boolean tocoMalo;// usado para saver si es que ya se toco al maloso 
    /**
     * constructor del objeto Bala 
     * da los valores iniciales a 
     * dir, band y tocoMalo
     */
    public Bala(boolean d)
    {
        dir=d;
        band=false;
        tocoMalo=false;
    }
    /**
     * actua del objeto Bala 
     * detecta cuando la bala se deve de eliminar
     */
    public void act() 
    { 
      move();
      if(esObstaculo()||esObstaculo2())   
          band=true;
      if(this.getX()<1||this.getX()==getWorld().getWidth()-1)
         band=true;
      if (band)
         getWorld().removeObject(this);
      else
          eliminaBala();
    }
    /**
     * movimiento de la bala con respecto a la direccion
     */   
    public void move()
    {
        if (dir)
           {
               move(8);
               super.setImage("bala.png");
           }
        else {
           move(-8);
           super.setImage("balaI.png");
            }
    }
    /**
     * detecta si se interpsecto con un obstaculo
     * @return true en case de ser cierto
     */
    public boolean esObstaculo()
    {
        boolean res=false;
        Actor obs=getOneIntersectingObject(Obstaculo.class);
        if(obs!=null)
          res=true;
        return res;
    }
    /**
     * 
     * detecta si se interpsecto con un obstaculo2
     * @return true en case de ser cierto
     */
    public boolean esObstaculo2()
    {
        boolean res=false;
        Actor obs=getOneIntersectingObject(Obstaculo2.class);
        if(obs!=null)
          res=true;
        return res;
    }
    /**
     * elimina la Bala si es que se interpsecto a un maloso 
     */
    public void  eliminaBala()
    {
        Actor malo=getOneIntersectingObject(Maloso.class);

        if(malo!=null)
        {
            getWorld().removeObject(malo);   
            getWorld().removeObject(this);
          
        }
    }
}
